package com.laozhao.snow;

import org.w3c.dom.Node;

public interface BaseNode <T>{

	public static final String ATTRIBUTE_ID = "id"; 
	public static final String ATTRIBUTE_CLASS = "class"; 
	public static final String ATTRIBUTE_NAME = "name"; 
	public static final String ATTRIBUTE_ICON = "icon"; 
	public static final String ATTRIBUTE_DESCRIPTION = "description";
	
	public static final String ELEMENT_SYSTEM_PROPERTY = "property";
	
	// attribute
	/**
	 * get id
	 * @return id
	 */
	public String getId();
	
	/**
	 * set id
	 * @param id
	 */
	public void setId(String id);
	
	/**
	 * get class
	 * @return class
	 */
	public T getClassObject();
	
	/**
	 * set class
	 * @param class
	 */
	public void setClassName(String className);

	/**
	 * get name
	 * @return name
	 */
	public String getName();
	
	/**
	 * set name
	 * @param name
	 */
	public void setName(String name);

	/**
	 * get icon
	 * @return icon
	 */
	public String getIcon();
	
	/**
	 * set icon
	 * @param icon
	 */
	public void setIcon(String icon);

	/**
	 * get description
	 * @return description
	 */
	public String getDescription();
	
	/**
	 * set description
	 * @param description
	 */
	public void setDescription(String description);
	
	/**
	 * get property
	 * @param id property id
	 * @return  property
	 */
	public Property getProperty(String name);
	
	/**
	 * get property
	 * @param  property
	 */
	public void setProperty(Property value);
	
	
	public void load(Node node);
	
//	public T newInstance();
}
